7 Teamwork
If I have seen further it is by standing on the shoulders of giants
Sir Isaac Newton
7.1 Methods of Competing
One of the fun things about the Cipher Challenge is that you can do it entirely on your own.
For a while, that can feel quite nice. Working alone means you can move at your own pace. You can follow your own ideas without needing to explain them. You can disappear down whatever rabbit hole you like without anyone asking you why you are suddenly convinced that the key length is 17 based on what is, at best, a fragile emotional argument. But sooner or later, you will get stuck. And when you are working alone, there is no one there to pull you out of it. No one to question your assumptions. No one to tell you, gently or otherwise, that your current idea might be… not your best.
That is where teams become interesting. A good team changes the way you think. It gives you multiple perspectives, different instincts, different ways of approaching the same problem. It gives you people to bounce ideas off, which is often the difference between being stuck for hours and being unstuck in five minutes because someone else noticed the one thing you didn’t.
That said, not every team works like that. Sometimes, when the challenges get harder, people drift away. Life gets busy, motivation dips, the problems starts to feel too big, and suddenly, the group that began full of enthusiasm becomes smaller, and eventually, sometimes, just you.
I’ve experienced both sides of this. From being part of a really engaged team, and also finding myself as the last person still actively working on a challenge. And in a slightly unexpected way, that showed me the kind of teammate I wanted to be. Someone who stays. Someone who contributes. Someone who doesn’t disappear when things stop being easy. Having joined a new school for sixth form, I had the fun change of forming a new team from scratch. Working together on the cipher challenge later turned out to be one of the easiest ways to get to know people. It’s genuinely an amazing experience to work together to solve a problem that no one fully understands.
7.2 Learning from Each Other
One of the biggest advantages of working in a team is the opportunity to learn from one another.
For instance, when I first started competing in the NCC, I could barely code. But working alongside friends who shared this enthusiasm for problem-solving created an environment in which I saw my confidence in coding improve. At the start of my sixth form year, I had just over a year of coding experience and could identify most commonly used ciphers in the challenge, but I didn’t really see myself as the ‘coding person’1. Yet, through the process of contributing to our team’s shared GitHub repository, I found myself working on annealing and modified Playfair ciphers. Whether it was optimising the hill climb parameters for various programs, or spotting a silly inequality error in the quadgram evaluation block, the shared teamwork made even the most daunting ciphers feel achievable.
At the same time, programming isn’t the only skill that matters. Some people are amazing at coding and automating processes, whereas others are better at spotting patterns, recognising when something doesn’t quite it, and knowing when to move onto another idea.
A good team brings all of these strengths together.
7.4 Working Practically
Listed below are some things that helped our team work more efficiently, and I hope you might find something useful here:
Sharing Progress - it can be useful to have something like a team Discord server or any group chat so that you can communicate and keep each other updated with progress
Divide and Explore - different people can test different ideas at the same time which can speed up the process of ruling things out
Shared resources - my team kept a shared GitHub repo where we stored all our scripts and solutions to most common ciphers. Having a shared codebase can be very useful in the long term and make later challenges easier to approach
Team captain login - since only the ‘Team Captain’ account can submit solutions, it might be worth to make sure more than one person has access to it in case the team captain is unavailable
Teamwork is not always smooth. People work and think at different speeds and sometimes ideas clash and disagreements happen. When things get difficult, it’s easy for communication to break down. But it helps to remember that everyone is working towards the same common goal. So taking a step back, listening to each other and being willing to let go of your own initial ideas to intake new information can make a big difference.
The only Python programs I recall writing were an IOC calculator and a simple Vigenère cipher solver for a known key↩︎